<?php

/**
 * Хранилище для временных загруженных файлов формы.
 *
 */
abstract class Kernel_Form_Upload
{
    /**
     * Наименование переменной сессии для хранения загруженных файлов.
     *
     */
    const SESSION_VAR = 'FORM_UPLOAD';

    /**
     * Возвращает файлы текущей загрузки.
     *
     * @return array
     */
    static public function get() {
        return get_array_element($_SESSION, self::SESSION_VAR, array());
    }

    /**
     * Сохраняет файлы в текущую загрузку.
     *
     * @param   array   $files
     */
    static public function store($files) {
        foreach ($files as $file) {
            $file->temporize();
        }
        $_SESSION[self::SESSION_VAR] = $files;
    }

    /**
     * Очищает текущую загрузку.
     *
     */
    static public function clear() {
        foreach (self::get() as $file) {
            $file->destruct();
        }
        unset($_SESSION[self::SESSION_VAR]);
    }

    /**
     * Переводит закачанные файлы в статус "временный" для последующей обработки.
     *
     */
    static public function temporize() {
        foreach (self::get() as $file) {
            $file->temporize();
        }
    }
}
